# Copyright (c) 2010-2011 Robin Jarry
# 
# This file is part of EVE Corporation Management.
# 
# EVE Corporation Management is free software: you can redistribute it and/or 
# modify it under the terms of the GNU General Public License as published by 
# the Free Software Foundation, either version 3 of the License, or (at your 
# option) any later version.
# 
# EVE Corporation Management is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 
# more details.
# 
# You should have received a copy of the GNU General Public License along with 
# EVE Corporation Management. If not, see <http://www.gnu.org/licenses/>.

__date__ = "2010-03-29"
__author__ = "diabeteman"

import logging

from django.db import transaction

from ecm.core.eve import api
from ecm.core.parsers import checkApiVersion
from ecm.data.accounting.models import EntryType

logger = logging.getLogger(__name__)

#------------------------------------------------------------------------------
@transaction.commit_manually
def update():
    try:
        logger.info("fetching /eve/RefTypes.xml.aspx...")
        # connect to eve API
        api_conn = api.connect()
        # retrieve /corp/CorporationSheet.xml.aspx
        typesApi = api_conn.eve.RefTypes()
        checkApiVersion(typesApi._meta.version)

        currentTime = typesApi._meta.currentTime
        cachedUntil = typesApi._meta.cachedUntil
        logger.debug("current time : %s", str(currentTime))
        logger.debug("cached util : %s", str(cachedUntil))
        logger.debug("parsing api response...")
        
        
        for type in typesApi.refTypes:
            entryType = EntryType()
            entryType.refTypeID = type.refTypeID
            entryType.refTypeName = type.refTypeName
            entryType.save()
        
        logger.debug("Saving to database...")
        transaction.commit()
        logger.info("Update successfull")
    except:
        # error catched, rollback changes
        transaction.rollback()
        logger.exception("update failed")



